#ifndef T_AUTOMA_INTER_KERNEL_CALL_TEMPLATE_HPP
#define T_AUTOMA_INTER_KERNEL_CALL_TEMPLATE_HPP

#include <string>

typedef const wchar_t*(__stdcall* CommandStrParaCB)(
	const wchar_t* caller, const wchar_t* receiver,
	// can be "preCheck"
	const wchar_t* callMode,
	const wchar_t* cmdMajor, const wchar_t* cmdMinor,
	const wchar_t* parameters,
	void* binaryData, size_t binDataLen);

class InterKernelCallTemplate {
public:
	virtual const wchar_t* getKernelName() { return L""; };

	virtual void setInterKernelCallback(CommandStrParaCB callback) {};

	virtual const wchar_t* interKernelCall(
		const wchar_t* caller,
		const wchar_t* callMode,
		const wchar_t* cmdMajor, const wchar_t* cmdMinor,
		const wchar_t* parameters,
		void* binaryData, size_t binDataLen) {
		return L"";
	};
};

#endif